<template>
	<view class="wrapper">

		<swiper class="swiper" indicator-dots autoplay circular indicator-color="#ccc" indicator-active-color="#fff">
			<block v-for="(item, index) in goods.pics" :key="index">
				<swiper-item>
					<image class="swiper-img" :src="item.pics_big" @click="previewImg(index)"></image>
				</swiper-item>
			</block>
		</swiper>
		<!-- 商品信息 -->
		<view class="goods-info">
			<view class="price">￥{{goods.goods_price}}</view>
			<view class="name-favo">
				<view class="name">{{goods.goods_name}}</view>
				<view class=favo>
					<text class="iconfont icon-share"></text>
					<text>分享</text>
					<button open-type="share">分享</button>
				</view>
			</view>
			<view class="express">快递: 免运费</view>
		</view>
		<view class="promote">
			<view>
				<text class="name">促销</text>
				<text class="detail">满300减30元</text>
			</view>
			<view class="brother">
				<text class="name">已选</text>
				<text class="detail gray">黑色/S/1件</text>
			</view>
		</view>
		<!-- 图文介绍 -->
		<view class="goods-detail">
			<view class="tabs">
				<text :class="{active: activeIndex === index}" @click="changeActive(index)" v-for="(item, index) in menu" :key="index">{{item}}</text>
			</view>
			<view class="main">
				<view v-if="!activeIndex" v-html="goods.goods_introduce"></view>
				<view v-else>商品参数</view>
			</view>
		</view>
		<view class="fixed-bottom">
			<view class="icon-text">
				<text class="iconfont icon-kefu"></text>
				<text>联系客服</text>
				<button open-type="contact">联系客服</button>
			</view>
			<view class="icon-text" @click="toCart">
				<text class="iconfont icon-cart"></text>
				<text>购物车</text>
			</view>
			<view class="btn add-cart-btn" @click="addCart">加入购物车</view>
			<view class="btn buy-btn">立即购买</view>
		</view>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				// 存储详情数据
				goods: '',
				// 被点中时的下标
				activeIndex: 0,
				// 图文/商品菜单
				menu: ['图文介绍', '商品参数']
			}
		},
		onLoad(options) {
			// 获取传参
			// vue实例属性
			this.goodsId = options.goodsId
			this.getgoods()
		},
		// 分享
		onShareAppMessage() {
			// 定制弹窗
			return {
				title: this.goods.goods_name, //弹窗标题
				//分享后，别人打开时的页面路径。默认是当前页面路径,
				imageUrl: this.goods.pics[0].pics_big //弹窗的图片
			};
		},
		methods: {
			// 商详加入购物车
			addCart() {
				//对象法----------------------------------------------
				// 更新商品在storage购物车中的数据
				// 1. 获取storage
				// let cartData = uni.getStorageSync('cart') || {}
				// // 2.更新数据
				// let goodsId = this.goods.goods_id
				// // 3.判断该商品是否是首次添加
				// cartData[goodsId]={
				// 	num: cartData[goodsId]? cartData[goodsId].num+1 : 1,
				// 	check:true
				// };
				// // 保存到storage中
				// uni.setStorageSync('cart', cartData);

				// 数组法--------------------------------------------
				// 取storage数据
				let cart = uni.getStorageSync('cart') || []
				console.log(cart)
				// 更新数据
				let goodsId = this.goods.goods_id
				let newIndex = cart.findIndex(item => {
					return item.goodsId === goodsId
				})
				if (newIndex !== -1) {
					let newData = cart[newIndex]
					// 不是第一次点击加入购物车
					newData.num = newData.num + 1
					newData.checked = true

					cart.splice(newIndex, 1)
					cart.unshift(newData)
				} else {
					// 首次加入购物车
					let newGoods = {
						goodsId,
						num: 1,
						checked: true
					}
					// 将数据加到前面
					cart.unshift(newGoods)
				}
				// 存storage数据
				uni.setStorageSync('cart', cart)

				// 提示
				uni.showToast({
					title: '已加入购物车'
				})
			},

			// 跳转到购物车
			toCart() {
				uni.switchTab({
					url: '/pages/cart/cart'
				})
			},

			// // 图文/商品菜单切换
			selMenu(mindex) {
				this.activeIndex = mindex
			},
			// 图片预览
			previewImg(index) {
				// 获取需要预览图片的列表
				let urlList = this.goods.pics.map(item => {
					return item.pics_big
				})
				wx.previewImage({
					urls: urlList,
					current: urlList[index]
				})
			},
			// 获取数据 https://www.uinav.com/api/public/v1/goods/detail?goods_id=57396
			async getgoods() {
				this.goods = await this.$request({
					url: '/api/public/v1/goods/detail?goods_id=' + this.goodsId
				})
			}
		}
	}
</script>
<style lang="less">
	.iconfont {
		font-size: 40rpx;
	}

	.wrapper {
		background-color: #f4f4f4;
		padding-bottom: 98rpx;
	}

	.swiper {
		height: 720rpx;
	}

	.swiper-img {
		width: 100%;
		height: 720rpx;
	}

	.goods-info {
		padding: 40rpx 0 30rpx 20rpx;
		background-color: #fff;

		.price {
			color: #eb4450;
			font-size: 40rpx;
		}

		.name-favo {
			display: flex;
			height: 78rpx;
			margin-top: 14rpx;

			.name {
				color: #333;
				flex: 1;
				font-size: 28rpx;
				padding-right: 78rpx;
				overflow: hidden;
				text-overflow: ellipsis;
				display: -webkit-box;
				-webkit-line-clamp: 2; // 控制多行的行数
				-webkit-box-orient: vertical;
			}

			.favo {
				border-left: 1px solid #ddd;
				width: 144rpx;
				color: #999;
				font-size: 24rpx;
				display: flex;
				flex-direction: column;
				align-items: center;
				position: relative;

				button {
					// 覆盖,并且透明
					position: absolute;
					opacity: 0;
				}
			}
		}

		.express {
			color: #999;
			font-size: 24rpx;
			margin-top: 20rpx;
		}
	}

	.promote {
		margin-top: 20rpx;

		view {
			background-color: #fff;
			height: 96rpx;
			line-height: 96rpx;
			font-size: 28rpx;
			margin-top: 20rpx;
			padding-left: 20rpx;

			&.brother {
				margin-top: 0;
			}

			.name {
				color: #404040;
			}

			.detail {
				color: #ff4055;
				margin-left: 40rpx;

				&.gray {
					color: #dfdfdf;
				}
			}
		}
	}

	.goods-detail {
		margin-top: 20rpx;
		background-color: #fff;

		.tabs {
			display: flex;

			text {
				flex: 1;
				text-align: center;
				color: #404040;
				font-size: 22rpx;
				height: 100rpx;
				line-height: 100rpx;
				box-sizing: border-box;

				&.active {
					color: #ff4055;
					border-bottom: 10rpx solid #ff2644;
				}
			}
		}
	}

	.fixed-bottom {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		height: 98rpx;
		display: flex;
		background-color: #fff;

		.icon-text {
			flex: 2;
			font-size: 20rpx;
			color: #404040;
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
			position: relative;

			button {
				position: absolute;
				opacity: 0;
			}
		}

		.btn {
			flex: 3;
			color: #fff;
			text-align: center;
			line-height: 98rpx;

			&.add-cart-btn {
				background-color: #ffb400;
			}

			&.buy-btn {
				background-color: #ff2d4a;
			}
		}
	}
</style>
